An application server is a software engine that delivers applications to client computers or devices. An application server typically bundles middleware to enable applications to intercommunicate with dependent applications, like web servers, database management systems, and chart programs. Middleware is computer software that connects and integrates software components or applications. Middleware is used most often to support complex, distributed applications.
Conventionally, an application server is designed as monolithic executable code that implements all the required functionalities. The size of the code is very large and execution of the code consumes a significant amount of resources. It is also difficult to make changes to the code. Thus, some recent systems use a kernel to implement basic functions of the server, and add various plug-ins at runtime to implement additional features. A kernel is much smaller in size and is much easier to maintain and update than a conventional server.
For example, some application servers use Java Management Extensions (JMX)® as a kernel to integrate software, provide dynamic loading and instantiate classes at runtime. The JMX is a Java technology developed by Sun Microsystems, Inc. headquartered in Santa Clara, Calif. The JMX supplies tools for managing and monitoring system resources, including: applications, system objects, devices (e.g. printers) and service oriented networks. These resources are represented by objects called Managed Bean (MBean), which is a type of Java bean. However, the JMX supports only Mbeans. This reduces the flexibility of an application server that uses the JMX as a kernel. That is, the JMX kernel cannot be easily transported to environments where the Mbeans are not supported.
Moreover, an application server generally includes many components that share common features. Implementing these common features repeatedly across the components increase code size and complicates the code design.
Additionally, managing the components in an application server can be a complex task. Conventional techniques do not provide an efficient mechanism for managing the deployment on an application server and for access to the properties of a deployment.